package jdk8.method.reference.demo01;

/**
 * @author xiaoming
 * @version 1.0
 * @date 2019-05-06 21:17
 **/
public class PrintableDemo {
    // 定义方法, 参数传递接口, 对字符串就行打印
    public static void printString(Printable printable) {
        printable.print("HelloWorld");
    }

    public static void main(String[] args) {
        // 调用printString方法, 方法的参数使一个函数式接口, 所以可以传递lambda
        printString(str -> System.out.println(str));

        /*
        分析:
            Lambda 的目的使打印参数传递的字符串,
            把参数传给了System.out对象, 调用了out对象中的方法println()来输出字符串;
            注意:
                1. System.out对象存在;
                2. println() 也是存在;
                所以我们可以使用方法引用来优化lambda表达式
                可以使用System.out直接引用(调用)println()
         */
        // 注意: Lambda 中传递的参数类型要是引用的方法可以接收的
        printString(System.out::println);

    }
}
